package memoriaintermedia;

import memoriaintermedia.*;

/**
 *
 * @author Christian
 */

/**
 * Pagina: Representa un bloque de Disco donde se almacenan los archivos de 
 * la base de datos*/
public class Pagina<T> {
    /** Identidicador de la página en el disco. */ 
    private int numeroPagina;
    /** Datos almacenados en el bloque. */ //bloque de 4k
    private T datos;
    //modificado: true si fue modificado, false si no lo fue
    private boolean modificado=false;
    //determina si una pagina es clavada o no
    private boolean paginaclavada=false;
    
    /**
     * Crea una nueva pagina conociendo su id de pagina y los datos.
     * 
     * @param numeroPagina el ID de esta página.
     * @param datos datos almacenados en esta página.
     */
    
    public Pagina(int numeroPagina, T datos) {
        this.numeroPagina = numeroPagina;
        this.datos = datos;
    }

    public T getDatos() {
        return datos;
    }

    public void setDatos(T datos) {
        // cambiar el estado de modificado en caso se modifique
        if (this.datos.equals(datos)){modificado=false;}
        else{modificado=true;}
        this.datos = datos;
       
    }

    public int getNumeroPagina() {
        return numeroPagina;
    }
    
    public boolean getActualizado(){
        return this.modificado;
    }

    public boolean isPaginaclavada() {
        return paginaclavada;
    }

    public void setPaginaclavada(boolean paginaclavada) {
        this.paginaclavada = paginaclavada;
    }

    
    
    /**
     * Devuelde una representación textual de una página.
     * 
     * @return representación textual de esta página.
     */
    @Override
    public String toString()
    {
        return "Numero de Pagina: "+this.numeroPagina + "\t" +
                "Dato de pagina: " + this.datos;
    }
}
